<?php
Zend_Loader::loadClass('Application_Widget');
Zend_Loader::loadClass('Application_Plotter');
Zend_Loader::loadClass('Application_Printer');
Zend_Loader::loadClass('Application_Plotter_IndiciPrestazioneEnergetica');
class Application_Canvas extends Application_Widget
{
	
	
	/*
	protected $_formDecorators = array(
			'FormElements',
			'Form',
			array('HtmlTag', array('tag' => 'div', 'id' => 'form-wrap')),
	);

	protected $_displaygroupDecorators = array(
			'FormElements',
			'Fieldset',
	);

	protected $_elementDecorators = array(
			'viewHelper',
			array(array('htmltag1' => 'HtmlTag'), array('tag' => 'div', 'class' => 'form-span')),
			array('Label', array('tag' => 'div', 'tagClass' => 'form-span'))
	);
	*/

	public function run()
	{
		// 1. Analisi dei parametri in ingresso (getRequest)
		// 2. Identificare grafico richiesto
		// 3. Identificare parametri associati
		//    a) al grafico richiesto
		//    b) generici (es. fattore di scala, zoom, ecc)
		// 4. Istanziare oggetto plotter passando in argomento i parametri sopra identificati
		// 5. Recuperare i valori di ritorno del plotter 
		// 6. "Impacchettare" i valori sopra recuperati
		// 7. Istanziare l'oggetto printer (via output buffer) fornendo come argomento il pacchetto sopra costruito
		// 8. Assegnare alla view il contenuto del buffer (base64_encoded)
		// -- NELLA VIEW --
		// 8. Nel contenitore (div) del grafico impostare l'attributo SRC di un tag IMG in maniera tale che 
		//    stampi uno stream png raw: <img src="data:image/png;base64,$base64data" />  
		// -- 
		// L'oggetto printer, dato in input il pacchetto di parametri, e recuperato dalla configurazione globale
		// la libreria scelta per la visualizzazione, provvederà a formattare i dati nel formato richiesto per tale
		// libreria, ed ad invocare le API della libreria stessa per disegnare il grafico
		
		$fC = Zend_Controller_Front::getInstance();
		$params = $fC->getRequest()->getParams();
		
		if (!empty($params['graph'])) {
	
			$plotter = new Application_Plotter($params);
			if (!$plotter->errors) {
				$plotData = $plotter->plot();
				ob_start(); 										// Buffer in memoria dell'output html da questo punto in poi
				Application_Printer::printGraph($plotData);			// Cattura del grafico nel buffer in memoria
				$graph = ob_get_contents(); 						// Recupero del grafico dalla memoria
				ob_end_clean(); 									// Svuotamento buffer
				
				//$this->_view->legend = Application_Printer::printLegend($plotData);
				$this->_view->graph = base64_encode($graph);
				$this->_view->dataForTable = $plotData;
				
			}
			//else $this->_view->errors = $plotter->errors;
		} else { 
			if((!empty($params['indici']))){
				$indiciPrestazioneEnergetica=new Application_Plotter_IndiciPrestazioneEnergetica($params);
				$indiciEnergetici=$indiciPrestazioneEnergetica->call();
				$indiciEnergetici->calcoloEpe();
				$indiciEnergetici->calcoloEpi();
				$this->_view->dataForIndex=$indiciEnergetici;
				
			}
		}
		}
	
}
?>